package mobi.yuanshen.utils;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;


/**
 * 参数工具类
 * 用于存放系统常量和参数配置，提供全局配置和工具方法
 *
 * @author WinterCatter
 * @since 2023-12-04
 * @LastChange 2025-05-24
 */
@Component
public class ParamsUtils {
    /**
     * 根路径
     */
    @Value("${mobi.yuanshen.ParamUtils.BASE_URL}")
    public String BASE_URL;

    /**
     * 文件上传接口的url，地址+接口请求路径
     */
    @Value("${mobi.yuanshen.ParamUtils.FILE_UPLOAD_INTERFACE_URL}")
    public String FILE_UPLOAD_INTERFACE_URL;

    /**
     * 文件存储的绝对路径
     */
    @Value("${mobi.yuanshen.ParamUtils.LocalFileStorageAbsolutePath}")
    public String LocalFileStorageAbsolutePath;

    /**
     * 文件服务器访问路径
     * 用于通过HTTP访问上传的文件
     * @Develop 开发环境：http://localhost:8080/FileStorage
     * @Production 生产环境：BASE_URL/FileStorage
     */
    @Value("${mobi.yuanshen.ParamUtils.FileStorageHttpPath}")
    public String FileStorageHttpPath;


    @Value("${mobi.yuanshen.ParamUtils.ACCESS_KEY}")
    public String FileUploadAccessKey;

    /**
     * 控制台清屏方法
     * 用于在Windows命令行环境下清除控制台输出
     * 
     * 实现步骤：
     * 1. 创建ProcessBuilder对象执行cls命令
     * 2. 继承IO流确保输出正确重定向
     * 3. 等待命令执行完成避免清屏时机不当
     * 
     * 注意：该方法仅在Windows环境下有效
     */
    public void clearnCmd() {
        try {
            new ProcessBuilder("cmd", "/c", "cls")
                    .inheritIO()  // 继承父进程的IO流
                    .start()      // 启动进程
                    .waitFor();   // 等待进程结束
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}